package com.ly.mpayment.core.util;

import java.util.Date;
import java.util.List;

import com.ly.mpayment.persist.common.CustomUUID;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;


/**
 * 
 * @ClassName: ListRange
 * @Description: 承载返回前台的结果集
 * @date Jun 28, 2013 3:03:12 PM
 * 
 * @param <T>
 */
public class ListRange<T>   {

	/**
	 * 返回数据集合
	 */
	private List<T> list;

//	private String sessionId;


	public List<T> getList() {
		return list;
	}

	public void setList(List<T> list) {
		this.list = list;
	}

//	public String getSessionId() {
//		return sessionId;
//	}
//
//	public void setSessionId(String sessionId) {
//		this.sessionId = sessionId;
//	}
	
//	/**
//	 * 
//	 * @Title toJson 
//	 * @Description 将Result对象转换为Json字符串
//	 * @param @return
//	 * @return String
//	 * @throws
//	 */
//	public String toJson() {
//		Gson gson = GSONFactory.getGson();
//		return gson.toJson(this);
//	}

	/**
	 * 
	 * @Title toJsonWithoutProperties 
	 * @Description 将Result对象转换为Json字符串
	 * @param @param excludesProperties 需要排除的属性
	 * @param @return
	 * @return String
	 * @throws
	 */
	public String toJsonWithoutProperties(String[] excludesProperties) {
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.registerJsonValueProcessor(CustomUUID.class, new CustomJsonValueProcessor());
		jsonConfig.registerJsonValueProcessor(Date.class, new JsonValueProcessor(){
			public Object processArrayValue(Object value, JsonConfig jsonConfig) {
				if(value instanceof Date && value != null)
					return DateUtils.convert((Date)value, DateUtils.YYYY_MM_DD);
				return null;
			}

			public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
				if(value instanceof Date && value != null){
					return DateUtils.convert((Date)value, DateUtils.YYYY_MM_DD);
				}
				return null;
			}}); 
		if (excludesProperties != null)
			jsonConfig.setExcludes(excludesProperties);
		return JSONObject.fromObject(this, jsonConfig).toString();
	}

}
